/*
* let 用法类似于var 只是作用域不同
*   1. 不存在变量提升
*   2. 暂时性死区
*   3. 不允许重复声明
*   4. 块级作用域
* */
{
    let a = 10;
    var b = 1;
}
console.log(a);// 报错 ReferenceError：a is not defined
console.log(b);// 1

/*
* const 命令
* 声明一个只读属性。一旦声明，常量的值就不能改变
*
* 本质
* const 实际上保证的，并不是变量的值不得改动，而是变量指向的那个内存地址保存的数据不得
* 改动。对于简单类型的数据（数值、字符串、布尔值），值就保存在变量指向的内存空间，因此
* 等同于常量。但对于符合型的数据（主要是对象和数组），变量指向的内存地址，保存的只是一
* 个指向实际数据的指针，const只能保证这个指针是固定的（即总是指向另一个固定的地址），至
* 于它指向的数据结构是不是可变的，就完全不能控制了。因此，将一个对象申明为常量必须特别
* 小心
* */